package com.chunlin.testinterface.divice;

public interface USB {
    //接口中可以含有变量，但是接口中的变量会被隐式的指定为 public static final 变量
    public final static double brand = 3.0;

    //接口中不能有静态代码块和构造方法,也就是说接口中不允许有初始化程序
    // 编译失败
//    public USB() {}

    // 编译失败
//    static {
//        brand = 3.0;
//    }

    // 编译失败
    //{}

    public abstract void openDevice();
    public abstract void closeDevice();

    // 编译失败：因为接口中的方式默认为抽象方法
    // Error:(5, 23) java: 接口抽象方法不能带有主体
//    void closeDevice(){
//        System.out.println("关闭USB设备");
//    }

    //接口虽然不是类，但是接口编译完成后字节码文件的后缀格式也是.class
    //如果类没有实现接口中的所有的抽象方法，则类必须设置为抽象类
    //jdk8中：接口中还可以包含default方法,可以定义任意数量的默认方法
    //default方法意义和用途
    //向后兼容：
    //默认方法使得Java接口可以向后兼容。例如，当你想要在一个已经发布的接口中添加一个新方法时，不需要修改所有已经实现了这个接口的类
    // 可以在接口中为新方法提供一个默认实现，这样所有现有的实现类都可以继续工作，而无需修改
    //代码重用：
    //默认方法允许接口提供通用的功能实现，这样不同的实现类可以共享这些实现，减少代码重复
    //例如，如果多个实现类都需要相同的功能，可以在接口中定义一个默认方法提供该功能
    //简化接口的实现：
    //实现类可以选择性地重写默认方法。如果实现类不需要特定行为，它可以直接使用默认实现，而不必提供自己的实现
    public default void driveStart() {
        System.out.println("驱动启动");
    }
}
